🎖️GitЯра🎖️
Mirrored from https://github.com/I-AM-ENGINEER/RNode_Halow_Firmware.git synced 7m ago
RNode implementation based on the Taixin TXW8301, using the 802.11ah (Wi-Fi HaLow) LMAC layer
>RNode-Halow
Coverage map: https://map.rnode-halow.ru/
Firmware flasher: https://github.com/I-AM-ENGINEER/RNodeHalowOTA_Flasher
English
Implemented Features
The following is currently implemented:
• Broadcast packet transmission and reception over LMAC WiFi HaLow
• DHCP client or static IP
• Real-time statistics
• Frequency and modulation parameter selection
• TCP server
• OTA firmware update (unencrypted)
• Confirmed compatibility with RNS and its extensions — Meshchat, Sideband
• LBT (Listen Before Talk)
• Airtime limiting (currently broken)
What Is Currently Missing
• USB, UART, SPI connection support not implemented
• The LMAC stack remains a mystery; ideally the proprietary libs would be replaced
Default Parameters
• Frequency: 866–867 MHz (1 MHz channel width)
• PHY: WiFi MCS0
• Power: 17 dBm
• TCP Port: 8001
Dashboard
• RX/TX Bytes, Packets, Speed — self-explanatory
• Airtime — percentage of time the device is transmitting
• Channel Utilization — how busy the airwaves are
• Noise Floor Power Level — approximate noise level
Device Settings
<img width="968" height="1119" alt="image" src="https://github.com/user-attachments/assets/9a2c8310-06eb-45e2-8b96-3638ed505c0a" />
RF Settings
• TX Power — transmitter output power, max 20 dBm
• Central Frequency — operating frequency
• MCS Index — modulation/coding scheme; MCS0 has the longest range, MCS7 is the fastest. MCS10 is theoretically the most range-efficient but currently only MCS0 works reliably
• Bandwidth — channel width; currently only 1 and 2 MHz work
• TX Super Power — increases transmitter power (theoretically up to 25 dBm); long-term safety is unknown
Listen Before Talk
All devices support LBT by default. (not work for now) You can additionally limit the maximum airtime the device occupies to reduce collisions. 30–50% is optimal.
Network Settings
If you don't know what this is for, leave it alone — you can lock yourself out.
TCP Radio Bridge
By default, anyone can connect to the TCP port and send data directly over the air. To restrict this, set a whitelist of devices allowed to connect to the socket. Examples:
• T383838192.168.1.0/24 — allow all devices on the 192.168.1.x subnet
• T383838192.168.1.X/32 — allow only a single specific device
The Client field shows who is currently connected to the socket; only one connection at a time is allowed. Refreshes only on page reload.
Reticulum Configuration
Add the following to your Reticulum interfaces config. The IP address can be found via your router's DHCP server — the device hostname is T383838RNode-Halow-XXXXXX, where T383838XXXXXX is the last 3 bytes of the MAC address, or via T383838RNode-HaLow Flasher.exe.
[[RNode-Halow]]
type = TCPClientInterface
enabled = yes
target_host = 192.168.XXX.XXX
target_port = 8001
Meshchat Setup
Go to Interfaces → Add Interface → type TCP Client Interface → enter the node IP in Target Host, port T3838388001 (or as configured in the web configurator).
<img width="570" height="593" alt="image" src="https://github.com/user-attachments/assets/d524da22-9a19-46bf-a187-aec61b444c5a" />
Sideband Setup
Go to Connectivity → Connect via TCP → enter the node IP in Target Host, port T3838388001 (or as configured in the web configurator).
<img width="543" height="449" alt="image" src="https://github.com/user-attachments/assets/0e0b5456-d7bd-49c9-a009-d92f3819d335" />
For Developers
To get started quickly, install the Taixin CDK and open the project in the T383838project folder. All necessary tooling is included in CDK.
Logs are output via UART (IO12, IO13) at 2,000,000 baud (blocking logs).
For full debugging, use a Blue Pill flashed as CKLink. The chip must be STM32F103C8 — C6 will not work, and Chinese suppliers often ship rejected/cloned chips with broken USB.
Flashing via CKLink (EIDE / CLI)
Requirements: DebugServer + GDB, CKLink debugger connected.
T282828
python utils/flash.py T8b949e# flash firmware
python utils/flashlog.py --port COM3 -n T79c0ff500 T8b949e# flash + capture boot logs
Tool paths are read from env vars T383838CSKY_DEBUGSERVER, T383838CSKY_GDB (and T383838CSKY_MINGW_BIN on Windows). Defaults are in T383838utils/flash_env.sh.
OTA firmware is generated automatically at T383838project/out/XXX.tar after building the project.
Русский
RNode-Halow
Реализованный функционал
На текущий момент реализовано следующее:
• Передача и прием широковещательных пакетов по LMAC WiFi Halow
• DHCP клиент или статический IP
• Статистика в реальном времени
• Выбор частоты, параметров модуляции
• TCP сервер
• Прошивка/обновление по OTA (незашифровано)
• Подтверждена работоспособность с rns и его надстройками - meshchat, sideband
• LBT
• Ограничение airtime
Что на данный момент отсутсвует:
• Стабильность - проект на ранней стадии разработки
• RNS стек - устройство является только TCP модемом
• Не реализована поддержка подключения по USB, SDIO
• LMAC стек остается загадкой, по хорошему избавиться от проприетарных либ
Стандартные параметры
Частота 866-867 МГц (ширина канала 1МГц)
PHY WiFi - MCS0
Мощность - 17dBm
Порт TCP - 8001
Dashboard
• RX/TX Bytes, packets, speed - понятно по названию
• Airtime - процент времени, которое устройство передает в эфир
• Channel utilization - насколько эфир загружен
• Noise floor power level - приблизительный уровень шумов
Device Settings
RF Settings
• TX Power - выходная мощность передатчика, макс 20 dBm
• Central frequency - частота работы
• MCS index - тип кодировки, MCS0 - самый дальнобойный, MCS7 - самый быстрый. Теоретически самый дальнобойный MCS10, но на текущий момент нормально работает только MCS0
• Bandwidth - ширина канала, на текущий момент работает только 1 и 2 МГц
• TX Super Power - увеличивает мощность передатчика (в теории до 25 dBm), насколько безопасно долговременно использовать - неизвестно
Listen Before Talk
Все устройства по умолчанию поддерживают LBT, но дополнительно можно ограничить максимальное время (временно не работает), которое устройство будет занимать радиоэфир для уменьшения колизий. Оптимально 30-50%
Network Settings
Если не знаете зачем надо, лучше не трогать, есть возможность заблокировать себе доступ
TCP Radio Bridge
По умолчанию любой может подключиться к TCP порту и слать данные напрямую в эфир, что бы это ограничить, рекомендуется установить белый список устройств, которые могут подключиться по данному сокету. Возможные варианты конфигурации:
192.168.1.0/24 - разрешить всем из локальной сети
192.168.1.X/32 - разрешить только одному устройству
В поле client пишется кто подключен к данному сокету в текущий момент, подключение может быть только одно. Обновляется только при обновлении страницы
Настройка Reticulum через конфиг
Дастаточно в интерфейсы вписать конфиг нового TCPClientInterface интерфейса.
IP адресс можно узнать через DHCP сервер на роутере - устройство имеет hostname "RNode-Halow-XXXXXX", где XXXXXX - последние 3 байта MAC адреса или через RNode-HaLow Flasher.exe
T282828
[[RNode-Halow]]
type = TCPClientInterface
enabled = yes
target_host = 192.168.XXX.XXX
target_port = 8001
Настройка Meshchat
Перейти во вкладку "Interfaces" -> "Add Interface" -> тип "TCP Client Interface" -> ввести IP ноды в поле "Target Host", порт 8001, или настроенный в веб конфигураторе
<img width="570" height="593" alt="image" src="https://github.com/user-attachments/assets/d524da22-9a19-46bf-a187-aec61b444c5a" />
Настройка Sideband
Перейти во вкладку "Connectivity" -> "Connect via TCP" -> ввести IP ноды в поле "Target Host", порт 8001, или настроенный в веб конфигураторе
<img width="543" height="449" alt="image" src="https://github.com/user-attachments/assets/0e0b5456-d7bd-49c9-a009-d92f3819d335" />
Для разработчиков
Для простого старта достаточно поставить Taixin CDK и открыть проект в папке "project". Весь необходимый инструментарий содержится в CDK.
Логи идут по UART (IO12, IO13) со скоростью 2'000'000 бод, т.к. логи блокирующие
Для полноценной отладки используется Blue Pill прошитая в CKLink. Чип обязательно должен быть STM32F103C8, C6 не подойдет + китайцы любят пихать отбраковку/клоны с неработающим USB.
Прошивка через CKLink (EIDE / CLI)
Требования: DebugServer + GDB, подключенный CKLink.
T282828
python utils/flash.py T8b949e# прошить прошивку
python utils/flashlog.py --port COM3 -n T79c0ff500 T8b949e# прошить + захватить логи загрузки
Пути к инструментам берутся из переменных окружения T383838CSKY_DEBUGSERVER, T383838CSKY_GDB (и T383838CSKY_MINGW_BIN на Windows). По умолчанию — из T383838utils/flash_env.sh.
Прошивка для OTA генерируется автоматически T383838project/out/XXX.tar после сборки проекта.
Support
USDT (TON) T383838EQCPUzAUHbm7M_6tYwQhC7DGNMpouiR_SY-6Bw_FguEaVZZp
Litecoin T383838LSzupUjU2WtMAXkrE87icEJHaQes7JaXqA
Served by rngit 1.5.0 - Generated in 0.1s